home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / PAINT.PAK / DIBATTR.CPP next >
C/C++ Source or Header  |  1997-05-06  |  2KB  |  68 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectWindows
  3. // Copyright (c) 1991, 1995 by Borland International, All Rights Reserved
  4. //
  5. // Example paint program dib attribute dialog
  6. //----------------------------------------------------------------------------
  7. #include <owl/pch.h>
  8. #include <owl/applicat.h>
  9. #include <owl/button.h>
  10. #include <owl/dialog.h>
  11. #include "dibattr.h"
  12. #include "paint.rh"
  13.  
  14. extern uint32 ColorCapacity(uint depth);
  15.  
  16. DEFINE_RESPONSE_TABLE1(TDibAttrDialog, TDialog)
  17.   EV_BN_CLICKED(IDC_2COLOR,    Bn2Color),
  18.   EV_BN_CLICKED(IDC_16COLOR,   Bn16Color),
  19.   EV_BN_CLICKED(IDC_256COLOR,  Bn256Color),
  20.   EV_BN_CLICKED(IDC_HICOLOR,   BnHiColor),
  21.   EV_BN_CLICKED(IDC_TRUECOLOR, BnTrueColor),
  22. END_RESPONSE_TABLE;
  23.  
  24. TDibAttrDialog::TDibAttrDialog(TWindow* parent, 
  25.                                int&     width,
  26.                                int&     height,
  27.                                uint32&  colors,
  28.                                TModule* module)
  29. :
  30.   TDialog(parent, "IDD_DIBATTR", module),
  31.   Width(width), Height(height), Colors(colors)
  32. {
  33. }
  34.  
  35. void
  36. TDibAttrDialog::SetupWindow()
  37. {
  38.   SetDlgItemInt(IDC_WIDTH, Width);
  39.   SetDlgItemInt(IDC_HEIGHT, Height);
  40.  
  41.   // Check the radio button that corresponds to the color count
  42.   // passed to the constructor.
  43.   //
  44.   CheckRadioButton(IDC_2COLOR, IDC_TRUECOLOR,
  45.     Colors == 2 ? IDC_2COLOR :
  46.       Colors == 16 ? IDC_16COLOR :
  47.         Colors == 256 ? IDC_256COLOR :
  48.           Colors == 65536L ? IDC_HICOLOR : IDC_TRUECOLOR);
  49.  
  50.   // Disable radio buttons for color resolutions greater than the capacity
  51.   // of the current display driver.
  52.   //
  53.   TScreenDC screenDC;
  54.   uint32 MaxColors = ColorCapacity(screenDC.GetDeviceCaps(BITSPIXEL)*screenDC.GetDeviceCaps(PLANES));
  55.   ::EnableWindow(GetDlgItem(IDC_16COLOR),   MaxColors >= 16);
  56.   ::EnableWindow(GetDlgItem(IDC_256COLOR),  MaxColors >= 256);
  57.   ::EnableWindow(GetDlgItem(IDC_HICOLOR),   MaxColors >= 65536L);
  58.   ::EnableWindow(GetDlgItem(IDC_TRUECOLOR), MaxColors >= 16777216L);
  59. }
  60.  
  61. bool
  62. TDibAttrDialog::CanClose()
  63. {
  64.   Width = GetDlgItemInt(IDC_WIDTH);
  65.   Height = GetDlgItemInt(IDC_HEIGHT);
  66.   return true;
  67. }
  68.